using MauiApp.Services;
using Microsoft.Extensions.DependencyInjection;
using System.Threading.Tasks;

namespace MauiApp
{
    public partial class AppShell : Shell
    {
        public AppShell()
        {
            InitializeComponent();
          
            // 注册页面路由
            Routing.RegisterRoute("LoginPage", typeof(Views.LoginPage));
            Routing.RegisterRoute("MainPage", typeof(Views.MainPage));
            Routing.RegisterRoute("TypeManagePage", typeof(Views.TypeManagePage));
            Routing.RegisterRoute("StudyStatsPage", typeof(Views.StudyStatsPage));
            
            // 启动时检查登录状态
            CheckLoginStatus();
        }
        
        // 检查登录状态
        private async void CheckLoginStatus()
        {
            try
            {
                // 获取ApiService实例
                var apiService = App.ServiceProvider.GetRequiredService<IApiService>();
                
                // 检查是否已登录
                if (apiService.IsLoggedIn)
                {
                    Console.WriteLine("AppShell: 用户已登录，直接进入主页面");
                    await GoToMainPageAsync();
                }
                else
                {
                    Console.WriteLine("AppShell: 用户未登录，进入登录页面");
                    // 不需要额外导航，因为LoginPage已经是默认启动页面
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"AppShell: 检查登录状态异常: {ex.Message}");
            }
        }
        
        // 导航到主页面
        public static async Task GoToMainPageAsync()
        {
            try
            {
                if (Current != null)
                {
                    // 修正绝对路由：MainPage 位于 TabBar(MainPages) 下
                    await Current.GoToAsync("//MainPages/MainPage");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"AppShell: 导航到主页面失败: {ex.Message}");
            }
        }
        
        // 导航到登录页面
        public static async Task GoToLoginPageAsync()
        {
            try
            {
                if (Current != null)
                {
                    await Current.GoToAsync("//LoginPage");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"AppShell: 导航到登录页面失败: {ex.Message}");
            }
        }
    }
}
